#ifndef BREACH_H
#define BREACH_H
#include "Commands/Subsystem.h"
#include "WPILib.h"

/**
 *
 *
 * @author team308
 */
class Breach: public Subsystem {
private:

	Solenoid breachSolenoid;
	Solenoid breachSolenoidDown;
	// It's desirable that everything possible under private except
	// for methods that implement subsystem capabilities
public:
	Notifier *breachNUp;
	Notifier *breachNDown;
	Notifier *breachIsDown;
	Notifier *breachPulse;
	Notifier *stopPulsing;
	Notifier *startPulsing;
	bool isBreachUp;
	bool isBreachPulsing;
	enum BreachDirection{
		kBreachUp,
		kBreachDown
	};
	Breach();
	void Init();
	static void Pulse(void*);
	static void NotifyDown(void*);
	static void MoveUp(void*);
	static void MoveDown(void*);
	static void StartPulsing(void*);
	static void StopPulsing(void*);
	void InitDefaultCommand();
	void ControlBreachState(BreachDirection Direction);
	bool IsBreachUp();
};

#endif
